//128 Longest Consecutive Sequence
/*
给定一个整数数组，求这个数组中的数字可以组成的最长连续序列有多长

输入输出样例
	输入一个整数数组，输出一个整数，表示连续序列的长度

Input: [100, 4, 200, 1, 3, 2]
Output: 4

最长连续序列是 [1,2,3,4]


可以把所有数字放到一个哈希表，然后不断地从哈希表中任意取一个值，并删除掉其之
前之后的所有连续数字，然后更新目前的最长连续序列长度。重复这一过程，就可以找到所
有的连续数字序列
*/
int longestConsecutive(vector<int> &nums)
{
	unordered_set<int> hash; //

	for (const int &num : nums)
	{
		hash.insert(num);
	}

	//
	int ans = 0;
	while (!hash.empty())
	{
		int cur = *(hash.begin());
		hash.erase(cur); //
		int next = cur + 1, prev = cur - 1;
		while (hash.count(next)) //
		{
			hash.erase(next++);
		}
		while (hash.count(prev))
		{
			hash.erase(prev--);
		}
		ans = max(ans, next - prev - 1);
	}
	return ans;
}